﻿package work;

import static java.lang.System.out;

import java.io.File;
import java.io.IOException;
import java.util.HashSet;
import java.util.Set;

import org.apache.commons.io.FileUtils;
import org.apache.commons.lang.StringUtils;
import org.apache.log4j.Logger;

import work.utils.WorksUtils;

import com.h819.core.file.pdf.itext.PDFUtils;
import com.h819.core.utils.MyDateUtils;
import com.h819.core.utils.MyMessageException;

public class Work extends WorksUtils {

	Logger log = Logger.getLogger(Work.class);

	/**
	 * 从平台中下载标准号列表中，指定的标准的文本,txt 格式
	 * 
	 * @param standardCodeList
	 *            包含标准号的文件，标准号逐行排列
	 * @param localDirectory
	 *            指定的下载到本地文件夹
	 */
	private void downLoadPDFFiles() {

		// 需要查询的表名: st_standard 为下载标准，st_modify 为下载修改单
		downLoadPDFFilesFromServer(
				new File("D://ftpFiles//ftpfile.txt"),
				"st_standard",
				new File("D://ftpFiles//"
						+ MyDateUtils.getToday("yyyy-MM-dd_HH-mm-ss")));

	}

	/**
	 * 按照给定的 where 条件，从平台中下载文件，where 之前的语句不用写。
	 * 
	 * @param sqlWhereConditon
	 *            where 条件
	 * @param localDirectory
	 *            指定的下载到本地文件夹
	 */
	private void downLoadPDFFilesBySql() {

		// 需要查询的表名: st_standard 为下载标准，st_modify 为下载修改单
		// namecn like '%涂装作业%'
		downLoadPDFFilesFromServer(
				"namecn like '%焊接作业%'",
				"st_standard",
				new File("D://ftpFiles//"
						+ MyDateUtils.getToday("yyyy-MM-dd_HH-mm-ss")));

	}

	/**
	 * 计算指定目录中所有的pdf文本的页数，包括子目录。
	 * 
	 * @param srcPdfFileDir
	 *            待计算的文件夹路径
	 * @return
	 * @throws MyMessageException
	 */
	private void getPdfNumberOfPages() {

		try {
			System.out.println("number of pages :"
					+ PDFUtils.getNumberOfPages(new File(
							"D://ftpFiles//20100825")));
		} catch (MyMessageException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

	/**
	 * 检测平台中的标准文本是否存在
	 * 
	 * @param standardCodeList
	 *            包含标准号的文件，txt 格式，标准号逐行排列
	 * @param localDirectory
	 *            存放结果的本地文件夹
	 */
	private void checkPDFFilesExist(Set<String> standardCodeList,
			File localDirectory) {

		checkPDFFilesExistOnServer(standardCodeList, localDirectory);
	}

	private void checkPDFFilesExist(File notExistList) {

		// String selectSql =
		// "select standard_code,TEXT_ADDRESS from st_standard t where "
		// +
		// "t.lasted_modify_time < to_date('2010-07-01 16:30:00','yyyy-MM-dd hh24:mi:ss') and "
		// +
		// "t.lasted_modify_time > to_date('2010-01-01 16:30:00','yyyy-MM-dd hh24:mi:ss')";

		String selectSql = "select standard_code,TEXT_ADDRESS from st_standard st where st.text_address like 'Work/IB2/%'";

		out.println(selectSql);

		checkPDFFilesExistOnServer(selectSql, notExistList);

	}

	/**
	 * 根据标准号，查询首标网相应字段
	 * 
	 * @param sourFile
	 *            存放标准号的 txt 文件，每个标准号一行
	 * @param prop
	 *            需要查询的字段，对于与数据库字段，用此来拼写 sql 语句
	 */

	private void checkTiLu(File sourFile, String[] prop) {

		// 检查文件是否存在
		Set<String> set = new HashSet<String>();
		try {

			for (String s : FileUtils.readLines(sourFile)) {

				set.add(s);

				// out.println(s);
			}

			checkTiLu(set, new File(sourFile.getParent()
					+ "//checkFileResult.txt"), prop);

		} catch (IOException e1) {
			// TODO Auto-generated catch block
			e1.printStackTrace();
		}
	}

	/**
	 * 去掉下载的pdf文件的标准名称
	 * 
	 * @param localDirectory
	 */
	private void renamDownloadFiles(File localDirectory)

	{
		if(!localDirectory.isDirectory())
		{
			log.info(localDirectory + " not a Directory");
			return;
		}
		
		File[] f = localDirectory.listFiles();

		for (File ff : f) {
			String name = ff.getAbsolutePath();

			String subName = StringUtils.substringBetween(name, "_", ".pdf");
			String subName2 = StringUtils.remove(name, subName);
			String subName3 = StringUtils.remove(subName2, "_");
			
			log.info("rename \""+name +"\" to \""+subName3+"\"");

			ff.renameTo(new File(subName3));
		}

	}

	public static void main(String[] args) {
		// TODO Auto-generated method stub

		Work work = new Work();

		// === 下载pdf文件
		//work.downLoadPDFFiles();
		// work.downLoadPDFFilesBySql();

		// 按照语句条件
		work.downLoadPDFFiles();

		// 计算页数
		// work.getPdfNumberOfPages();

		// 添文件夹中pdf 文件加水印

		// 检测平台中的标准标准题录是否存在，是否有文本
		// work.checkTiLu(new File("D://ftpFiles//123.txt"), new String[] {
		// "STANDARD_CODE", "NAMECN", "ISSUE_TIME", "TEXT_ADDRESS" });
		
		//去掉下载的pdf文件的标准名称
		//work.renamDownloadFiles(new File("D:\\ftpFiles\\02\\"));
	}
}